/*
  模拟队列操作
  题目描述
    给出一系列队列操作，包括
      入队，用数字 1 表示，比如 1 2，表示将元素 2 入队
      出队，用数字 2 表示，表示将队首出队
      访问队首，用数字 3 表示，表示访问队首元素
    当某个操作不合法时，请输出 impossible!
  输入
    第一行一个整数 n，表示操作次数
    接下来 n 行，每行是一种操作
  输出
    访问队首元素时请输出队首元素
    当某个操作不合法时请输出 impossible!
  样例输入
    6
    2
    1 2
    3
    1 3
    2
    3
  样例输出
    impossible!
    2
    3
  提示
    所有数字在 int 范围内
*/

#include <bits/stdc++.h>

using namespace std;

int main(){
    int n;
    queue <int> q1;

    cin >> n;
    for (int i = 1; i <= n; i++) {
        int x;
        cin >> x;

        if (x == 1) {
            int x1;
            cin >> x1;
            q1.push(x1);
        } else if (x == 2) {
            if (q1.empty()) {
                cout << "impossible!" << endl;
            } else {
                q1.pop();
            }
        } else if (x == 3) {
            if (q1.empty()) {
                cout << "impossible!" << endl;
            } else {
                cout << q1.front() << endl;
            }
        }
    }

    return 0;
}